/*
 * niveau.c
 *
 *  Created on: Apr 21, 2011
 *      Author: gorus
 */

#include "niveau.h"


niveau allouer_niveau(niveau n) {
	n.decor = (BITMAP*) malloc(sizeof(BITMAP*)) ;
	n.gameover = (BITMAP*) malloc(sizeof(BITMAP*)) ;
	n.objet = (BITMAP**) malloc((NB_OBJETS_DECORS)*sizeof(BITMAP**)) ;

	return n ;
}

niveau init_niveau() {
	niveau v ;
	v = allouer_niveau(v) ;
	v.decor = load_bitmap("./images/eau.bmp",NULL) ;
	v.gameover = load_bitmap("./images/univers.bmp",NULL) ;
	v.objet[0] = load_bitmap("./images/caisse.bmp",NULL) ;
	v.objet[1] = load_bitmap("./images/caisse_ok.bmp",NULL) ;
	v.objet[2] = load_bitmap("./images/bonus.bmp",NULL) ;
	v.objet[3] = load_bitmap("./images/pic2.bmp",NULL) ;
	return v ;
}

void liberer_niveau(niveau n) {
	free(n.decor) ;
	free(n.gameover) ;
	free(n.objet) ;
}


void afficher_objet(char carte[LONGEUR_NIVEAU][NB_BLOCS_HAUTEUR], BITMAP* buffer, BITMAP** objets){
	int i;
	int j;
	int position_x;
	int position_y;
	for (i = 0 ; i < NB_BLOCS_HAUTEUR ; i++){
		for (j = 0 ; j < LONGEUR_NIVEAU ; j++){

			position_x = j * TAILLE_BLOC ;
			position_y = i * TAILLE_BLOC ;

			switch(carte[i][j]){
			case 'M':
				draw_sprite(buffer,objets[0],position_x,position_y);
				break;
			case 'E' :
				draw_sprite(buffer,objets[1],position_x,position_y) ;
			case 'S':
				break;
			case 'B' :
				draw_sprite(buffer,objets[2],position_x,position_y) ;
				break ;

			}
		}
	}
}




int charger_niveau(char niveau[LONGEUR_NIVEAU][NB_BLOCS_HAUTEUR], int numero_niveau ) {
	FILE *stream;
	char c ;
 // "./carte/test.txt"
	if (numero_niveau==1) {
		stream = fopen("./carte/test.txt", "r");
	}


	if( stream==NULL ) {
		printf( "Erreur à l'ouverture du fichier test.txt\n");
		exit(1);
	}
	int i ;
	int j ;
	for (i = 0 ; i < NB_BLOCS_HAUTEUR ; i++){
		for (j = 0 ; j < LONGEUR_NIVEAU ; j++){
				c = fgetc(stream) ;
				niveau[i][j] = c ;
		}
		c = fgetc(stream) ;


	}
	fclose(stream);
	return 0;
}



